# -*- coding: utf-8 -*-
#autor: João Rebocho Nº 6035
#Data:20/10/2013
#obs: Aula prática 6
#

#Sistemas operativos os e shutil, as funcoes dir() e help()
import os, shutil

#diretoria de trabalho
print os.getcwd()
#mudança de diretoria
os.chdir("/home/user/Documentos")
#executar um comando
print dir(os)
os.system("ls")
os.system("ps u")
#e tambem help(os)

#glob, sys.stderr e sys.exit()
#executar chamando
#python sisop2.py andam a roubar
import glob
lista_ficheiros = glob.glob("*")
for ficheiro in lista_ficheiros:
	print
	print "nome do ficheiro:                 ", ficheiro
	print "comprimento do nome do ficheiro = {}".format(len(ficheiro))

#import sys
#print sys.argv + ['no', 'meu', 'bolso']
#sys.stderr.write("erro de execucao")
#sys.exit()

#expressoes regulares
import re
str1 = 'Se urso vires foge tocando gaita para Hamburgo'
lista = re.findall(r'\bg[a-z]*', str1)
print lista 

print re.sub(r'(\b[a-z]+) \1', r'\1', 'cat in the the hat')
print str1.replace('gaita', 'flauta')

'''
ficheiro = open("teste.text", "r")
texto = ficheiro.read()
ficheiro.close()
texto = re.sub(r'a', 'u', texto)
print texto
'''

#matematica math e random
#lista de 10 aleatorios distribuidos uniformemente entre 0 e 1
import random, math
lista = [random.uniform(0, 1) for x in xrange(10)]
print lista 
#e agora a lista de senos
lista_senos = map(math.sin, lista)
print lista_senos
#e a sua soma
soma = sum(lista_senos)
#e finalmente o seu quadrado
print math.sqrt(soma)

import smtplib, urllib2, SimpleHTTPServer, SocketServer
for line in urllib2.urlopen('http://www.publico.pt'):
        if 'Coelho' in line or 'Jardin' in line or 'Raspadinha' in line:
                print line
#http://www.e-eeasy.com/SMTPServerList.aspx
server = smtplib.SMTP('smtp.cheapnet.it')
try:
        server.sendmail('xxx@yyy.com', 'zzz@treata.com', """TESTE""")

        server.quit()
except: pass
PORT = 8000
Handler = SimpleHTTPServer.SimpleHTTPRequestHandler
httpd = SocketServer.TCPServer(("",PORT), Handler)
httpd.server_forever()

#datas datetime
import time
t1 = time.clock()
#fazer algo de lento...
t2 = time.clock()
print "tempo decorrido", t2 - t1
from datetime import time
agora = date.today()
print agora
print date(2013, 10, 28)
aniversario = date(1963, 3, 15)
idade = agora - aniversario
print "idades em dias", idades

#multi-threading
import threading, zipfile
class AsyncZip(threading.Thread):
	def __init__(self, infile, outefile):
		threading.Thread.__init__(self)
		self.infile = infile
		self.outfile = output
		pass 
	
	def run(self):
		f = zipfile.ZipFile(self.outfile, 'w', zipfile.ZIP_DEFLATED)
		f.write(self.infile)
		f.close()
		print 'Finished background zip of:', self.infile

backgorund = AsyncZip('mydate.txt', 'myarchive.zip')
backgorund.start()

